home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
001-025
/
disk_020
/
amigatoatari
/
efopen.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-05-06
|
1KB
|
59 lines
#include <stdio.h>
/*
* Attempt to open a file with the given access mode.
* Return its file descriptor, or if the open fails, print an error
* message and exit.
*/
FILE *efopen(name, mode)
char *name, *mode;
{
FILE *fp, *fopen();
char *msg;
if ((fp = fopen(name, mode)) != NULL)
return fp;
fprintf(stderr, "Cannot %s: '%s'\n",
strcmp(mode, "w") ? "open" : "create", name);
exit(1);
}
/*
* Manipulate file extensions.
* 'name' must be large enough to hold any possible filename.
* If 'stripp' is nonzero, any old extension will be removed. Then, if the
* file does not already have an extension, 'extension' is appended to the
* filename.
*/
char *fext(name, extension, stripp)
char *name, *extension;
int stripp;
{
char *s, *beg;
/* go past pathname */
for (beg = name + strlen(name) - 1; beg > name; --beg)
if (stpchr("/\\", *beg))
{
++beg;
break;
}
if (stripp) /* strip extension */
{
for (s = beg; *s && *s != '.'; ++s)
;
*s = '\0';
}
for (s = beg; *s != '.'; ++s) /* add extension */
if (!*s)
{
strcat(beg, extension);
break;
}
return name;
}